/**
 * @(#)Wiederholung.java
 * 1.0, 2013-01-24
 */
package de.hdm.gruppenkalender.team04.data;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.sql.Timestamp;
import java.util.Vector;

// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.7DE80537-8664-DB6A-D89E-0E0A842F4078]
// </editor-fold>
/**
 * Schnittstellenspezifikation eines Alarms.
 *
 * @author Mathias Bendel (mb167)
 * @author Björn Fichnter (bf023)
 * @author Stefan Hettich (sh176)
 * @author René Kugel (rk044)
 * @author Mark Leonberger (ml072)
 * @author Marta Przybylski (mp070)
 *
 * @version 1.0, 2013-01-24
 *
 * @see WiederholungImpl
 */
public interface Wiederholung extends Remote {

    /**
     * Gibt die ID der {@link Wiederholung} zurück.
     *
     * @return  int             id
     * @throws  RemoteException
     */
    public int getId() throws RemoteException;

    /**
     * Setzt eine neue ID der {@link Wiederholung}.
     *
     * @param   id
     * @throws  RemoteException
     */
    public void setId(int id) throws RemoteException;

    /**
     * Gibt den Start-Zeitpunkt der {@link Wiederholung} zurück.
     *
     * @return  Timestamp       start
     * @throws  RemoteException
     */
    public Timestamp getStart() throws RemoteException;

    /**
     * Setzt einen neuen Start-Zeitpunkt.
     *
     * @param   start
     * @throws  RemoteException
     */
    public void setStart(Timestamp start) throws RemoteException;

    /**
     * Gibt den End-Zeitpunkt der {@link Wiederholung} zurück.
     *
     * @return  Timestamp       ende
     * @throws  RemoteException
     */
    public Timestamp getEnde() throws RemoteException;

    /**
     * Setzt einen neuen End-Zeitpunkt.
     *
     * @param   ende
     * @throws  RemoteException
     */
    public void setEnde(Timestamp ende) throws RemoteException;

    /**
     * Gibt den Titel der {@link Wiederholung} zurück.
     *
     * @return  String          titel
     * @throws  RemoteException
     */
    public String getTitel() throws RemoteException;

    /**
     * Setzt einen neuen Titel.
     *
     * @param   titel
     * @throws  RemoteException
     */
    public void setTitel(String titel) throws RemoteException;

    /**
     * Gibt den Ort der {@link Wiederholung} zurück.
     *
     * @return  String          ort
     * @throws  RemoteException
     */
    public String getOrt() throws RemoteException;

    /**
     * Setzt einen neuen Ort.
     *
     * @param   ort
     * @throws  RemoteException
     */
    public void setOrt(String ort) throws RemoteException;

    /**
     * Gibt die Beschreibung der {@link Wiederholung} zurück.
     *
     * @return  String          beschreibung
     * @throws  RemoteException
     */
    public String getBeschreibung() throws RemoteException;

    /**
     * Setzt eine neue Beschreibung
     *
     * @param   beschreibung
     * @throws  RemoteException
     */
    public void setBeschreibung(String beschreibung) throws RemoteException;

    /**
     * Gibt die ID der verknüpften {@link Alarm} zurück.
     *
     * @return  int             erinnerungId
     * @throws  RemoteException
     */
    public int getErinnerungId() throws RemoteException;

    /**
     * Setzt eine neue {@link Alarm}-ID.
     *
     * @param   erinnerungId
     * @throws  RemoteException
     */
    public void setErinnerungId(int erinnerungId) throws RemoteException;

    /**
     * Gibt die ID der verknüpften {@link Kategorie} zurück.
     *
     * @return  int             kategorieId
     * @throws  RemoteException
     */
    public int getKategorieId() throws RemoteException;

    /**
     * Setzt eine neue {@link Kategorie}-ID.
     *
     * @param   kategorieId
     * @throws  RemoteException
     */
    public void setKategorieId(int kategorieId) throws RemoteException;

    /**
     * Gibt die ID der {@link Person} zurück, die den {@link Alarm} erstellt
     * hat zurück.
     *
     * @return  int             erstellerId
     * @throws  RemoteException
     */
    public int getErstellerId() throws RemoteException;

    /**
     * Setzt die {@link Person}-ID des Erstellers.
     *
     * @param   erstellerId
     * @throws  RemoteException
     */
    public void setErstellerId(int erstellerId) throws RemoteException;

    /**
     * Gibt die ID des verknüpften {@link Kalender} zurück.
     *
     * @return  int             kalenderId
     * @throws  RemoteException
     */
    public int getKalenderId() throws RemoteException;

    /**
     * Setzt eine neue {@link Kalender}-ID.
     *
     * @param   kalenderId
     * @throws  RemoteException
     */
    public void setKalenderId(int kalenderId) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.F9164C38-7B09-FACB-8348-33EB4D2B7CC7]
    // </editor-fold>
    /**
     * Gibt einen {@link Vector} von {@link Integer}-Werten mit den ID's der
     * teilnehmenden {@link Person} zurück.
     *
     * @return  Vector<Integer> Teilnehmer-IDs.
     * @throws  RemoteException
     */
    public Vector<Integer> getTeilnehmerIds() throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker ">
    // #[regen=yes,id=DCE.49B35906-377D-14F1-BDD4-5252D4CBE8EF]
    // </editor-fold>
    /**
     * Setzt einen neuen Teilnehmer-{@link Vector}.
     *
     * @param   teilnehmerIds
     * @throws  RemoteException
     */
    public void setTeilnehmerIds(Vector<Integer> teilnehmerIds) throws
            RemoteException;

    /**
     * Gibt die ID des Folge-{@link Termin} zurück.
     *
     * @return  int             folgetermin
     * @throws  RemoteException
     */
    public int getFolgeterminId() throws RemoteException;

    /**
     * Setzt eine neue Folge-{@link Termin}-ID.
     *
     * @param   folgeterminId
     * @throws  RemoteException
     */
    public void setFolgeterminId(int folgeterminId) throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.052CAAA5-2FC4-74A5-4524-422D576C782C]
    // </editor-fold> 
    /**
     * Gibt die ID des Vorgänger-{@link Termin} zurück.
     *
     * @return  int vorgaengerterminId
     * @throws  RemoteException
     */
    public int getVorgaengerterminId() throws RemoteException;

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.755A584B-CAFC-0FDF-2CDC-730767D20B79]
    // </editor-fold> 
    /**
     * Setzt eine neue Vorgänger-{@link Termin}-ID.
     * 
     * @param   vorgaengerterminId
     * @throws  RemoteException
     */
    public void setVorgaengerterminId(int vorgaengerterminId) throws
            RemoteException;

    /**
     * Gibt einen eindeutigen Identifikations-String zu Anzeige in der GUI zurück.
     *
     * @return  String          IdentifikationsName
     * @throws  RemoteException
     */
    public String ermittleIdentifikationsName() throws RemoteException;
}
